Police

Introduction

For this project, we will be using three different data sets. The csvs that we will be using are “OIS_Dataset_Incidents.csv”, “OIS_Dataset_Officers”, and “OIS_Dataset_Subjects.csv”. These datasets involve cases with incidents, police officers, and subjects within Austin, TX. The first dataset is “OIS_Dataset_Incidents.csv”. Mainly describes when, where, and how the incident occured. The second dataset is “OIS_Dataset_Officers”. Here describes who the officers were during those incidents, which includes their age, gender, etc. The third dataset is “OIS_Dataset_Subjects.csv”. This describes the subjects who were involved in the incidents, including their race/ethnicity, age, etc.

To download the data needed for this project:

  1. Click or copy/paste this link to your web browser https://data.world/ryanmak/s-17-dv-final-project
  2. Download the files “OIS_Dataset_Incidents.csv”, “OIS_Dataset_Officers”, and “OIS_Dataset_Subjects.csv”.

R Configuration

Below is our sessionInfo().

sessionInfo(package=NULL)
## R version 3.3.2 (2016-10-31)
## Platform: x86_64-w64-mingw32/x64 (64-bit)
## Running under: Windows 10 x64 (build 14393)
## 
## locale:
## [1] LC_COLLATE=English_United States.1252 
## [2] LC_CTYPE=English_United States.1252   
## [3] LC_MONETARY=English_United States.1252
## [4] LC_NUMERIC=C                          
## [5] LC_TIME=English_United States.1252    
## 
## attached base packages:
## [1] stats     graphics  grDevices utils     datasets  methods   base     
## 
## loaded via a namespace (and not attached):
##  [1] backports_1.0.5 magrittr_1.5    rprojroot_1.2   tools_3.3.2    
##  [5] htmltools_0.3.5 yaml_2.1.14     Rcpp_0.12.10    stringi_1.1.2  
##  [9] rmarkdown_1.4   knitr_1.15.1    stringr_1.1.0   digest_0.6.11  
## [13] evaluate_0.10

ETL

Here we have the ETL code to clean our datasets. These datasets have already been cleaned.

OIS_Dataset_Incidents

source("../01 Data/ETL.OIS_Dataset_Incidents.R")
## Loading required package: readr
## Warning: package 'readr' was built under R version 3.3.3
## Loading required package: plyr
## Parsed with column specification:
## cols(
##   Case_Number = col_character(),
##   Date = col_character(),
##   Day_of_Week = col_character(),
##   Time = col_character(),
##   Day_Part = col_character(),
##   Premise_Category = col_character(),
##   Inside_or_Outside = col_character(),
##   Subject_Weapon = col_character(),
##   Number_of_Officer_Shooters = col_integer(),
##   Call_Type_Categories = col_character(),
##   Number_of_Officers_When_Shots_Fired = col_integer(),
##   Number_of_Hits = col_integer(),
##   Location_1 = col_character()
## )
## Warning in `[<-.factor`(`*tmp*`, is.na(x), value = ""): invalid factor
## level, NA generated
## Warning in `[<-.factor`(`*tmp*`, is.na(x), value = ""): invalid factor
## level, NA generated

## Warning in `[<-.factor`(`*tmp*`, is.na(x), value = ""): invalid factor
## level, NA generated

## Warning in `[<-.factor`(`*tmp*`, is.na(x), value = ""): invalid factor
## level, NA generated

## Warning in `[<-.factor`(`*tmp*`, is.na(x), value = ""): invalid factor
## level, NA generated

## Warning in `[<-.factor`(`*tmp*`, is.na(x), value = ""): invalid factor
## level, NA generated

## Warning in `[<-.factor`(`*tmp*`, is.na(x), value = ""): invalid factor
## level, NA generated

## Warning in `[<-.factor`(`*tmp*`, is.na(x), value = ""): invalid factor
## level, NA generated

## Warning in `[<-.factor`(`*tmp*`, is.na(x), value = ""): invalid factor
## level, NA generated

## Warning in `[<-.factor`(`*tmp*`, is.na(x), value = ""): invalid factor
## level, NA generated
## [1] "Number_of_Officer_Shooters"
## Warning in `[<-.factor`(`*tmp*`, is.na(x), value = 0): invalid factor
## level, NA generated
## [1] "Number_of_Officers_When_Shots_Fired"
## Warning in `[<-.factor`(`*tmp*`, is.na(x), value = 0): invalid factor
## level, NA generated
## [1] "Number_of_Hits"
## Classes 'tbl_df', 'tbl' and 'data.frame':    52 obs. of  13 variables:
##  $ Case_Number                        : Factor w/ 52 levels "06-0011398","06-0151964",..: 51 38 30 41 31 39 37 43 47 48 ...
##  $ Date                               : Factor w/ 51 levels "1/1/2006","1/14/2013",..: 43 42 32 11 50 48 34 13 24 35 ...
##  $ Day_of_Week                        : Factor w/ 7 levels "Fri","Mon","Sat",..: 4 1 5 4 6 3 1 1 4 4 ...
##  $ Time                               : Factor w/ 52 levels "0;13","0;19",..: 42 13 18 27 25 1 35 22 6 5 ...
##  $ Day_Part                           : Factor w/ 6 levels "day","Day","Evening",..: 4 3 3 3 3 5 5 5 4 4 ...
##  $ Premise_Category                   : Factor w/ 8 levels "Business","Park",..: 1 7 8 8 3 3 8 6 8 8 ...
##  $ Inside_or_Outside                  : Factor w/ 3 levels "Inside","Inside / Outside",..: 1 3 3 1 3 3 3 3 3 3 ...
##  $ Subject_Weapon                     : Factor w/ 9 levels "air pistol (BB gun)",..: 8 5 4 2 2 9 2 8 8 2 ...
##  $ Number_of_Officer_Shooters         : num  1 1 1 2 1 1 1 1 1 2 ...
##  $ Call_Type_Categories               : Factor w/ 14 levels "armed subject",..: 9 7 13 3 11 2 9 9 9 4 ...
##  $ Number_of_Officers_When_Shots_Fired: num  3 1 1 9 2 1 3 10 26 3 ...
##  $ Number_of_Hits                     : num  10 1 3 1 1 5 0 1 1 3 ...
##  $ Location_1                         : Factor w/ 51 levels "10607 Golden Quail Drive(30.379803, -97.702036)",..: 50 51 25 15 16 49 33 37 45 30 ...
##  - attr(*, "spec")=List of 2
##   ..$ cols   :List of 13
##   .. ..$ Case_Number                        : list()
##   .. .. ..- attr(*, "class")= chr  "collector_character" "collector"
##   .. ..$ Date                               : list()
##   .. .. ..- attr(*, "class")= chr  "collector_character" "collector"
##   .. ..$ Day_of_Week                        : list()
##   .. .. ..- attr(*, "class")= chr  "collector_character" "collector"
##   .. ..$ Time                               : list()
##   .. .. ..- attr(*, "class")= chr  "collector_character" "collector"
##   .. ..$ Day_Part                           : list()
##   .. .. ..- attr(*, "class")= chr  "collector_character" "collector"
##   .. ..$ Premise_Category                   : list()
##   .. .. ..- attr(*, "class")= chr  "collector_character" "collector"
##   .. ..$ Inside_or_Outside                  : list()
##   .. .. ..- attr(*, "class")= chr  "collector_character" "collector"
##   .. ..$ Subject_Weapon                     : list()
##   .. .. ..- attr(*, "class")= chr  "collector_character" "collector"
##   .. ..$ Number_of_Officer_Shooters         : list()
##   .. .. ..- attr(*, "class")= chr  "collector_integer" "collector"
##   .. ..$ Call_Type_Categories               : list()
##   .. .. ..- attr(*, "class")= chr  "collector_character" "collector"
##   .. ..$ Number_of_Officers_When_Shots_Fired: list()
##   .. .. ..- attr(*, "class")= chr  "collector_integer" "collector"
##   .. ..$ Number_of_Hits                     : list()
##   .. .. ..- attr(*, "class")= chr  "collector_integer" "collector"
##   .. ..$ Location_1                         : list()
##   .. .. ..- attr(*, "class")= chr  "collector_character" "collector"
##   ..$ default: list()
##   .. ..- attr(*, "class")= chr  "collector_guess" "collector"
##   ..- attr(*, "class")= chr "col_spec"
source("../01 Data/ETL.OIS_Dataset_Officers.R")
## Parsed with column specification:
## cols(
##   Case_Number = col_character(),
##   Date = col_character(),
##   Officer_Name = col_character(),
##   Rank = col_character(),
##   Officer_Race_Ethnicity = col_character(),
##   Officer_Gender = col_character(),
##   Officer_Age = col_integer(),
##   PD_Jurisdiction = col_character(),
##   Years_LE_Experience = col_double(),
##   Prev_OIS = col_character(),
##   Officer_Weapon_Caliber = col_character(),
##   Officer_Weapon_Type = col_character(),
##   Number_of_Shots_Fired_by_Officer = col_integer(),
##   How_Cleared = col_character(),
##   Location_1 = col_character()
## )
## Warning in `[<-.factor`(`*tmp*`, is.na(x), value = ""): invalid factor
## level, NA generated

## Warning in `[<-.factor`(`*tmp*`, is.na(x), value = ""): invalid factor
## level, NA generated

## Warning in `[<-.factor`(`*tmp*`, is.na(x), value = ""): invalid factor
## level, NA generated

## Warning in `[<-.factor`(`*tmp*`, is.na(x), value = ""): invalid factor
## level, NA generated

## Warning in `[<-.factor`(`*tmp*`, is.na(x), value = ""): invalid factor
## level, NA generated

## Warning in `[<-.factor`(`*tmp*`, is.na(x), value = ""): invalid factor
## level, NA generated

## Warning in `[<-.factor`(`*tmp*`, is.na(x), value = ""): invalid factor
## level, NA generated

## Warning in `[<-.factor`(`*tmp*`, is.na(x), value = ""): invalid factor
## level, NA generated

## Warning in `[<-.factor`(`*tmp*`, is.na(x), value = ""): invalid factor
## level, NA generated

## Warning in `[<-.factor`(`*tmp*`, is.na(x), value = ""): invalid factor
## level, NA generated

## Warning in `[<-.factor`(`*tmp*`, is.na(x), value = ""): invalid factor
## level, NA generated

## Warning in `[<-.factor`(`*tmp*`, is.na(x), value = ""): invalid factor
## level, NA generated
## [1] "Officer_Age"
## Warning in `[<-.factor`(`*tmp*`, is.na(x), value = 0): invalid factor
## level, NA generated
## [1] "Years_LE_Experience"
## Warning in `[<-.factor`(`*tmp*`, is.na(x), value = 0): invalid factor
## level, NA generated
## [1] "Number_of_Shots_Fired_by_Officer"
## Warning in `[<-.factor`(`*tmp*`, is.na(x), value = 0): invalid factor
## level, NA generated
## Classes 'tbl_df', 'tbl' and 'data.frame':    71 obs. of  15 variables:
##  $ Case_Number                     : Factor w/ 52 levels "06-0011398","06-0151964",..: 51 38 30 16 41 31 6 21 21 50 ...
##  $ Date                            : Factor w/ 51 levels "1/1/2006","1/14/2013",..: 43 42 32 46 11 50 29 12 12 43 ...
##  $ Officer_Name                    : Factor w/ 69 levels "Agt. Joe Cronin (TABC)",..: 16 8 27 2 42 29 4 65 32 61 ...
##  $ Rank                            : Factor w/ 7 levels "cpl","det","ofc",..: 3 2 3 4 3 3 1 3 3 3 ...
##  $ Officer_Race_Ethnicity          : Factor w/ 4 levels "Asian","Black",..: 3 4 4 4 3 4 4 4 4 4 ...
##  $ Officer_Gender                  : Factor w/ 2 levels "Female","Male": 2 2 2 2 2 2 2 2 2 2 ...
##  $ Officer_Age                     : num  36 49 36 36 34 36 40 25 30 24 ...
##  $ PD_Jurisdiction                 : Factor w/ 5 levels "APD","Park Police",..: 1 1 1 3 1 1 1 1 1 1 ...
##  $ Years_LE_Experience             : num  9.6 19 2 16 4 8 14 3 3 0.6 ...
##  $ Prev_OIS                        : Factor w/ 2 levels "No","Yes": 1 1 1 1 1 1 1 2 1 1 ...
##  $ Officer_Weapon_Caliber          : Factor w/ 8 levels "0.223","0.308",..: 4 3 3 3 1 3 8 6 3 3 ...
##  $ Officer_Weapon_Type             : Factor w/ 4 levels "rifle","semi-auto",..: 3 2 2 2 1 2 2 4 2 2 ...
##  $ Number_of_Shots_Fired_by_Officer: num  16 1 3 16 1 6 4 4 2 3 ...
##  $ How_Cleared                     : Factor w/ 6 levels "DOJ review cleared officers",..: 4 5 2 2 2 2 2 2 2 4 ...
##  $ Location_1                      : Factor w/ 51 levels "10607 Golden Quail Drive(30.379803, -97.702036)",..: 50 51 25 11 15 16 28 8 8 1 ...
##  - attr(*, "spec")=List of 2
##   ..$ cols   :List of 15
##   .. ..$ Case_Number                     : list()
##   .. .. ..- attr(*, "class")= chr  "collector_character" "collector"
##   .. ..$ Date                            : list()
##   .. .. ..- attr(*, "class")= chr  "collector_character" "collector"
##   .. ..$ Officer_Name                    : list()
##   .. .. ..- attr(*, "class")= chr  "collector_character" "collector"
##   .. ..$ Rank                            : list()
##   .. .. ..- attr(*, "class")= chr  "collector_character" "collector"
##   .. ..$ Officer_Race_Ethnicity          : list()
##   .. .. ..- attr(*, "class")= chr  "collector_character" "collector"
##   .. ..$ Officer_Gender                  : list()
##   .. .. ..- attr(*, "class")= chr  "collector_character" "collector"
##   .. ..$ Officer_Age                     : list()
##   .. .. ..- attr(*, "class")= chr  "collector_integer" "collector"
##   .. ..$ PD_Jurisdiction                 : list()
##   .. .. ..- attr(*, "class")= chr  "collector_character" "collector"
##   .. ..$ Years_LE_Experience             : list()
##   .. .. ..- attr(*, "class")= chr  "collector_double" "collector"
##   .. ..$ Prev_OIS                        : list()
##   .. .. ..- attr(*, "class")= chr  "collector_character" "collector"
##   .. ..$ Officer_Weapon_Caliber          : list()
##   .. .. ..- attr(*, "class")= chr  "collector_character" "collector"
##   .. ..$ Officer_Weapon_Type             : list()
##   .. .. ..- attr(*, "class")= chr  "collector_character" "collector"
##   .. ..$ Number_of_Shots_Fired_by_Officer: list()
##   .. .. ..- attr(*, "class")= chr  "collector_integer" "collector"
##   .. ..$ How_Cleared                     : list()
##   .. .. ..- attr(*, "class")= chr  "collector_character" "collector"
##   .. ..$ Location_1                      : list()
##   .. .. ..- attr(*, "class")= chr  "collector_character" "collector"
##   ..$ default: list()
##   .. ..- attr(*, "class")= chr  "collector_guess" "collector"
##   ..- attr(*, "class")= chr "col_spec"
source("../01 Data/ETL.OIS_Dataset_Subjects.R")
## Parsed with column specification:
## cols(
##   Case_Number = col_character(),
##   Date = col_character(),
##   Subject_Race_Ethnicity = col_character(),
##   Subject_Gender = col_character(),
##   Subject_Age = col_integer(),
##   Subject_Injuries = col_character(),
##   Subject_Drug_or_Alcohol_Use = col_character(),
##   Location_1 = col_character()
## )
## Warning in `[<-.factor`(`*tmp*`, is.na(x), value = ""): invalid factor
## level, NA generated

## Warning in `[<-.factor`(`*tmp*`, is.na(x), value = ""): invalid factor
## level, NA generated

## Warning in `[<-.factor`(`*tmp*`, is.na(x), value = ""): invalid factor
## level, NA generated

## Warning in `[<-.factor`(`*tmp*`, is.na(x), value = ""): invalid factor
## level, NA generated

## Warning in `[<-.factor`(`*tmp*`, is.na(x), value = ""): invalid factor
## level, NA generated

## Warning in `[<-.factor`(`*tmp*`, is.na(x), value = ""): invalid factor
## level, NA generated

## Warning in `[<-.factor`(`*tmp*`, is.na(x), value = ""): invalid factor
## level, NA generated
## Classes 'tbl_df', 'tbl' and 'data.frame':    54 obs. of  8 variables:
##  $ Case_Number                : Factor w/ 52 levels "06-0011398","06-0151964",..: 51 38 30 11 23 52 9 1 46 5 ...
##  $ Date                       : Factor w/ 51 levels "1/1/2006","1/14/2013",..: 43 42 32 10 20 41 44 1 4 28 ...
##  $ Subject_Race_Ethnicity     : Factor w/ 4 levels "Asian","Black",..: 4 2 2 3 4 4 3 3 4 3 ...
##  $ Subject_Gender             : Factor w/ 2 levels "Female","Male": 2 2 2 2 2 2 2 2 2 2 ...
##  $ Subject_Age                : Factor w/ 33 levels "16","18","20",..: 16 14 16 33 9 31 13 21 30 26 ...
##  $ Subject_Injuries           : Factor w/ 5 levels "injured","killed",..: 2 2 2 5 5 2 5 2 2 5 ...
##  $ Subject_Drug_or_Alcohol_Use: Factor w/ 5 levels "alcohol","drugs",..: 2 2 2 2 2 3 4 1 4 4 ...
##  $ Location_1                 : Factor w/ 51 levels "10607 Golden Quail Drive(30.379803, -97.702036)",..: 50 51 25 27 20 47 39 26 5 6 ...
##  - attr(*, "spec")=List of 2
##   ..$ cols   :List of 8
##   .. ..$ Case_Number                : list()
##   .. .. ..- attr(*, "class")= chr  "collector_character" "collector"
##   .. ..$ Date                       : list()
##   .. .. ..- attr(*, "class")= chr  "collector_character" "collector"
##   .. ..$ Subject_Race_Ethnicity     : list()
##   .. .. ..- attr(*, "class")= chr  "collector_character" "collector"
##   .. ..$ Subject_Gender             : list()
##   .. .. ..- attr(*, "class")= chr  "collector_character" "collector"
##   .. ..$ Subject_Age                : list()
##   .. .. ..- attr(*, "class")= chr  "collector_integer" "collector"
##   .. ..$ Subject_Injuries           : list()
##   .. .. ..- attr(*, "class")= chr  "collector_character" "collector"
##   .. ..$ Subject_Drug_or_Alcohol_Use: list()
##   .. .. ..- attr(*, "class")= chr  "collector_character" "collector"
##   .. ..$ Location_1                 : list()
##   .. .. ..- attr(*, "class")= chr  "collector_character" "collector"
##   ..$ default: list()
##   .. ..- attr(*, "class")= chr  "collector_guess" "collector"
##   ..- attr(*, "class")= chr "col_spec"
source("../01 Data/ETL.Austin_Race.R")
## Warning: Missing column names filled in: 'X11' [11], 'X12' [12], 'X13' [13]
## Parsed with column specification:
## cols(
##   State = col_character(),
##   GEOID = col_character(),
##   AreaName = col_character(),
##   B02001_001 = col_integer(),
##   B02001_002 = col_integer(),
##   B02001_003 = col_integer(),
##   B02001_004 = col_integer(),
##   B02001_005 = col_integer(),
##   B02001_006 = col_integer(),
##   B02001_007 = col_integer(),
##   X11 = col_character(),
##   X12 = col_character(),
##   X13 = col_character()
## )
## Warning in `[<-.factor`(`*tmp*`, is.na(x), value = ""): invalid factor
## level, NA generated

## Warning in `[<-.factor`(`*tmp*`, is.na(x), value = ""): invalid factor
## level, NA generated

## Warning in `[<-.factor`(`*tmp*`, is.na(x), value = ""): invalid factor
## level, NA generated

## Warning in `[<-.factor`(`*tmp*`, is.na(x), value = ""): invalid factor
## level, NA generated

## Warning in `[<-.factor`(`*tmp*`, is.na(x), value = ""): invalid factor
## level, NA generated

## Warning in `[<-.factor`(`*tmp*`, is.na(x), value = ""): invalid factor
## level, NA generated
## [1] "B02001_001"
## Warning in `[<-.factor`(`*tmp*`, is.na(x), value = 0): invalid factor
## level, NA generated
## [1] "B02001_002"
## Warning in `[<-.factor`(`*tmp*`, is.na(x), value = 0): invalid factor
## level, NA generated
## [1] "B02001_003"
## Warning in `[<-.factor`(`*tmp*`, is.na(x), value = 0): invalid factor
## level, NA generated
## [1] "B02001_004"
## Warning in `[<-.factor`(`*tmp*`, is.na(x), value = 0): invalid factor
## level, NA generated
## [1] "B02001_005"
## Warning in `[<-.factor`(`*tmp*`, is.na(x), value = 0): invalid factor
## level, NA generated
## [1] "B02001_006"
## Warning in `[<-.factor`(`*tmp*`, is.na(x), value = 0): invalid factor
## level, NA generated
## [1] "B02001_007"
## Warning in `[<-.factor`(`*tmp*`, is.na(x), value = 0): invalid factor
## level, NA generated
## Classes 'tbl_df', 'tbl' and 'data.frame':    1 obs. of  13 variables:
##  $ State     : Factor w/ 1 level "TX": 1
##  $ GEOID     : Factor w/ 1 level "16000US4805000": 1
##  $ AreaName  : Factor w/ 1 level "Austin city, Texas": 1
##  $ B02001_001: num 887061
##  $ B02001_002: num 666509
##  $ B02001_003: num 68215
##  $ B02001_004: num 4097
##  $ B02001_005: num 60270
##  $ B02001_006: num 655
##  $ B02001_007: num 58764
##  $ X11       : Factor w/ 0 levels: NA
##  $ X12       : Factor w/ 0 levels: NA
##  $ X13       : Factor w/ 0 levels: NA
##  - attr(*, "spec")=List of 2
##   ..$ cols   :List of 13
##   .. ..$ State     : list()
##   .. .. ..- attr(*, "class")= chr  "collector_character" "collector"
##   .. ..$ GEOID     : list()
##   .. .. ..- attr(*, "class")= chr  "collector_character" "collector"
##   .. ..$ AreaName  : list()
##   .. .. ..- attr(*, "class")= chr  "collector_character" "collector"
##   .. ..$ B02001_001: list()
##   .. .. ..- attr(*, "class")= chr  "collector_integer" "collector"
##   .. ..$ B02001_002: list()
##   .. .. ..- attr(*, "class")= chr  "collector_integer" "collector"
##   .. ..$ B02001_003: list()
##   .. .. ..- attr(*, "class")= chr  "collector_integer" "collector"
##   .. ..$ B02001_004: list()
##   .. .. ..- attr(*, "class")= chr  "collector_integer" "collector"
##   .. ..$ B02001_005: list()
##   .. .. ..- attr(*, "class")= chr  "collector_integer" "collector"
##   .. ..$ B02001_006: list()
##   .. .. ..- attr(*, "class")= chr  "collector_integer" "collector"
##   .. ..$ B02001_007: list()
##   .. .. ..- attr(*, "class")= chr  "collector_integer" "collector"
##   .. ..$ X11       : list()
##   .. .. ..- attr(*, "class")= chr  "collector_character" "collector"
##   .. ..$ X12       : list()
##   .. .. ..- attr(*, "class")= chr  "collector_character" "collector"
##   .. ..$ X13       : list()
##   .. .. ..- attr(*, "class")= chr  "collector_character" "collector"
##   ..$ default: list()
##   .. ..- attr(*, "class")= chr  "collector_guess" "collector"
##   ..- attr(*, "class")= chr "col_spec"

Shiny Visualizations

This is the link to the Shiny Apps that was published for our project: https://jenniferchung.shinyapps.io/finalproject/

require(ggplot2)
## Loading required package: ggplot2
require(dplyr)
## Loading required package: dplyr
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:plyr':
## 
##     arrange, count, desc, failwith, id, mutate, rename, summarise,
##     summarize
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
require(shiny)
## Loading required package: shiny
## Warning: package 'shiny' was built under R version 3.3.3
require(shinydashboard)
## Loading required package: shinydashboard
## Warning: package 'shinydashboard' was built under R version 3.3.3
## 
## Attaching package: 'shinydashboard'
## The following object is masked from 'package:graphics':
## 
##     box
require(data.world)
## Loading required package: data.world
## 
## Attaching package: 'data.world'
## The following object is masked from 'package:dplyr':
## 
##     query
require(readr)
require(DT)
## Loading required package: DT
## Warning: package 'DT' was built under R version 3.3.3
## 
## Attaching package: 'DT'
## The following objects are masked from 'package:shiny':
## 
##     dataTableOutput, renderDataTable
require(leaflet)
## Loading required package: leaflet
## Warning: package 'leaflet' was built under R version 3.3.3
require(plotly)
## Loading required package: plotly
## Warning: package 'plotly' was built under R version 3.3.3
## 
## Attaching package: 'plotly'
## The following object is masked from 'package:ggplot2':
## 
##     last_plot
## The following objects are masked from 'package:plyr':
## 
##     arrange, mutate, rename, summarise
## The following object is masked from 'package:stats':
## 
##     filter
## The following object is masked from 'package:graphics':
## 
##     layout
data.world(propsfile = "www/.data.world")
## Warning in utils::read.table(propsfile, header = FALSE, sep = "=",
## row.names = 1, : incomplete final line found by readTableHeader on
## 'www/.data.world'
## $token
## [1] "eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJwcm9kLXVzZXItY2xpZW50Omplbm5pZmVyY2h1bmciLCJpc3MiOiJhZ2VudDpqZW5uaWZlcmNodW5nOjozZTNiMTAzMy1kYzMxLTRmZTAtYTM4NS0yNDFjMjVmNzY2NTUiLCJpYXQiOjE0ODQ2OTcyNDUsInJvbGUiOlsidXNlcl9hcGlfd3JpdGUiLCJ1c2VyX2FwaV9yZWFkIl0sImdlbmVyYWwtcHVycG9zZSI6dHJ1ZX0.wObx6AHihRFAOixo6S51tLFadtGEsOoJNndHSIPajvSdXshuRzzemuLUxuMvU4vSLjWu4g2PesjXPjPqggdRWA"
## 
## $baseDWApiUrl
## [1] "https://api.data.world/v0/"
## 
## $baseQueryApiUrl
## [1] "https://query.data.world/"
## 
## $baseDownloadApiUrl
## [1] "https://download.data.world"
## 
## attr(,"class")
## [1] "data.world"
source("../02 Shiny/server.R")
## Loading required package: lubridate
## 
## Attaching package: 'lubridate'
## The following object is masked from 'package:plyr':
## 
##     here
## The following object is masked from 'package:base':
## 
##     date
## Warning in utils::read.table(propsfile, header = FALSE, sep = "=",
## row.names = 1, : incomplete final line found by readTableHeader on
## 'www/.data.world'
## Warning in utils::read.table(propsfile, header = FALSE, sep = "=",
## row.names = 1, : incomplete final line found by readTableHeader on
## 'www/.data.world'
source("../02 Shiny/ui.R")

Type of Case Call Versus Subject Age per Day of Week

Shiny Boxplot

This is a box plot that displays the ages of subjects in officer involved shootings. This is separated by the crime that the police were alerted for initially. The color shows the date in which the shootings happened. THE MOST COMMON CALL THAT LEADS TO SHOOTINGS IS DISTURBANCES. ADITIONALLY, CERTAIN CRIMES ARE MORE COMMON ON THE WEEKENDS SUCH AS BURGLARY.

Number of Shots Fired by Police Force per Race

Shiny Histogram

This histogram displays the count of bullets shot by police officers and the frequency/count as well. This histogram shows that most shootings involve low number of bullets. Aditionally, this histogram shows the race of the subjects involved in the shootings which allows us to discern valuable information about race relations and police. FROM A RACIAL PERSPECTIVE, ASIANS ARE THE LEAST LIKELY TO BE INVOLVED IN SHOOTINGS, FOLLOWED BY HISPANICS, BLACKS, THEN WHITES. THIS DOES NOT ACCOUNT FOR POPULATION SIZES.

Number of Shots Fired per Year

Shiny Scatterplot

This scatterplot shows the gradual trend with the increase of shots fired in the Austin area over time. Although this is not a strong correlation, the trend indicates a worrying trend with increases in shooting frequency as well as injuries from shootings.

Accuracy of Police Officer Shots based of Subject Weapon and Location

Shiny Crosstab

This crosstab shows the accuracy of police officers in the different scenarios with the weapon of the subject and the location of the shooting. The kpi indicates the hit rate of the officers over the total number of bullets shot. OFFICERS TEND TO BE LESS ACCURATE IN AREAS THAT WOULD INVOLVE INNOCENT BYSTANDERS SUCH AS PARKING LOTS. THEY ARE MUCH MORE ACCURATE IF THEY ARE IN A RESIDENCE OR BACKYARD. THEY ARE ALSO MORE ACCURATE IF THE SUBJECT IS EQUIPPED WITH A RIFLE, POSSIBLY INDICATING THE USE OF SPECIAL FORCES OR ADVANCED POLICE TEAMS.

Amount of Police Officer Shots and Subject Casualty based of Subject Drug Influence

Shiny Barchart

This barchart indicates the effects of drugs and alcohol on officer involved shootings. Officers shot more often at people under the influence and were more likely to seriously harm or kill these people. WHILE IT APPEARS THAT PEOPLE NOT UNDER THE INFLUENCE ARE SHOT AT MORE, THE COMBINATION OF THE DRUG AND ALCOHOL COLUMNS INDICATE THAT THOSE UNDER THE INFLUENCE ARE IN MUCH GREATER DANGER. IT IS MUCH MORE COMMON FOR THOSE NOT UNDER THE INFLUENCE TO ESCAPE WITH NO INJURY OR MINIMAL INJURIES.

Tableau Visualizations

Type of Case Call Versus Subject Age per Day of Week

Tableau Box Plot

This is a box plot that displays the ages of subjects in officer involved shootings. This is separated by the crime that the police were alerted for initially. THe color shows the date in which the shootings happened. THE MOST COMMON CALL THAT LEADS TO SHOOTINGS IS DISTURBANCES. ADITIONALLY, CERTAIN CRIMES ARE MORE COMMON ON THE WEEKENDS SUCH AS BURGLARY. Similar to the box plot from the Shiny image.

Number of Shots Fired by Police Force per Race

Tableau Histogram

This histogram displays the count of bullets shot by police officers and the frequency/count as well. This histogram shows that most shootings involve low number of bullets. Aditionally, this histogram shows the race of the subjects involved in the shootings which allows us to discern valuable information about race relations and police. FROM A RACIAL PERSPECTIVE, ASIANS ARE THE LEAST LIKELY TO BE INVOLVED IN SHOOTINGS, FOLLOWED BY HISPANICS, BLACKS, THEN WHITES. THIS DOES NOT ACCOUNT FOR POPULATION SIZES. Similar to the histogram from the Shiny image.

Number of Shots Fired per Year

Tableau Scatterplot

This scatterplot shows the gradual trend with the increase of shots fired in the Austin area over time. Although this is not a strong correlation, the trend indicates a worrying trend with increases in shooting frequency as well as injuries from shootings. Similar to the scatterplot from the Shiny image.

Accuracy of Police Officer Shots based of Subject Weapon and Location

Tableau Crosstab

This crosstab shows the accuracy of police officers in the different scenarios with the weapon of the subject and the location of the shooting. The kpi indicates the hit rate of the officers over the total number of bullets shot. OFFICERS TEND TO BE LESS ACCURATE IN AREAS THAT WOULD INVOLVE INNOCENT BYSTANDERS SUCH AS PARKING LOTS. THEY ARE MUCH MORE ACCURATE IF THEY ARE IN A RESIDENCE OR BACKYARD. THEY ARE ALSO MORE ACCURATE IF THE SUBJECT IS EQUIPPED WITH A RIFLE, POSSIBLY INDICATING THE USE OF SPECIAL FORCES OR ADVANCED POLICE TEAMS. Similar to the crosstab from the Shiny image.

Amount of Police Officer Shots and Subject Casualty based of Subject Drug Influence

Tableau Barchart

This barchart indicates the effects of drugs and alcohol on officer involved shootings. Officers shot more often at people under the influence and were more likely to seriously harm or kill these people. WHILE IT APPEARS THAT PEOPLE NOT UNDER THE INFLUENCE ARE SHOT AT MORE, THE COMBINATION OF THE DRUG AND ALCOHOL COLUMNS INDICATE THAT THOSE UNDER THE INFLUENCE ARE IN MUCH GREATER DANGER. IT IS MUCH MORE COMMON FOR THOSE NOT UNDER THE INFLUENCE TO ESCAPE WITH NO INJURY OR MINIMAL INJURIES. Similar to the barchart from the Shiny image.